﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using SISCON.Bl;
using SISCON.Vo;
using SISCON.Common;
using SISCON.Model;

namespace SISCON.Service
{
    /// <summary>
    /// Summary description for TeacherServices
    /// </summary>
    [WebService(Namespace = "http://SISCON.mx/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    public class TeacherServices : System.Web.Services.WebService
    {

        public TeacherBL _TeacherBL = new TeacherBL();
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Teacher>))]
        public ResultObject GetAllTeachers(string sessionUUID)
        {
            try
            {
                return new ResultObject(_TeacherBL.GetAllTeachers(sessionUUID), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de profesores. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(Teacher))]
        public ResultObject GetTeacher(string sessionUUID, long teacherId)
        {
            try
            {
                return new ResultObject(_TeacherBL.GetTeacher(sessionUUID, teacherId), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener al profesor. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(Teacher))]
        public ResultObject GetTeacherById(string sessionUUID, string schoolId)
        {
            try
            {
                return new ResultObject(_TeacherBL.GetTeacher(sessionUUID, schoolId), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener al profesor. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(Teacher))]
        public ResultObject GetTeacherByName(string sessionUUID, string teacherName)
        {
            try
            {
                return new ResultObject(_TeacherBL.GetTeacherByName(sessionUUID, teacherName), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener al profesor. Favor de intentar más tarde.");
            }
        }

        [WebMethod]
        public ResultObject DeleteTeacher(string sessionUUID, string teacherId)
        {
            try
            {
                _TeacherBL.DeleteTeacher(sessionUUID, teacherId);
                return new ResultObject("Ok",null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible eliminar el profesor. Favor de intentar más tarde.");
            }
        }
        [WebMethod]
        public ResultObject SaveTeacher(string sessionUUID, string teacherId, string name, string schoolId, string userId)
        {
            try
            {
                _TeacherBL.SaveTeacher(sessionUUID, teacherId, name, schoolId, userId);
                return new ResultObject("Ok", null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible guardar los datos del profesor. Favor de intentar más tarde.");
            }
        }
        
        [WebMethod]
        [System.Xml.Serialization.XmlInclude(typeof(List<Course>))]
        public ResultObject GetTeacherBySchoolId(string sessionUUID, string schoolId)
        {
            try
            {
                return new ResultObject(_TeacherBL.GetTeacherBySchoolId(sessionUUID, schoolId), null);
            }
            catch (Exception ex)
            {
                return new ResultObject(null, ex is SISCONException ? ex.Message : "No fue posible obtener la lista de profesores. Favor de intentar más tarde.");
            }
        }
    }
}
